package com.ruoyi.advertisement.service;

import java.util.List;
import java.util.Map;

/**
 * 广告统计服务接口
 * 
 * @author ruoyi
 */
public interface IAdvertisementStatisticsService {
    
    /**
     * 获取广告概览统计数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 统计信息
     */
    Map<String, Object> getAdvertisementOverview(String startDate, String endDate);
    
    /**
     * 获取广告播放趋势数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param materialId 素材ID
     * @return 趋势数据
     */
    Map<String, Object> getPlayTrendData(String startDate, String endDate, Long materialId);
    
    /**
     * 获取素材播放排名
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param limit 排名数量
     * @return 播放排名
     */
    List<Map<String, Object>> getMaterialPlayRank(String startDate, String endDate, Integer limit);
    
    /**
     * 获取广告转化率统计
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 转化率数据
     */
    Map<String, Object> getConversionRate(String startDate, String endDate);
    
    /**
     * 获取时段播放分析
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 时段分析数据
     */
    Map<String, Object> getHourlyPlayAnalysis(String startDate, String endDate);
    
    /**
     * 更新广告播放统计
     * 
     * @param materialId 素材ID
     * @param duration 播放时长
     * @param isCompleted 是否完整播放
     * @return 更新结果
     */
    int updatePlayStatistics(Long materialId, Integer duration, Boolean isCompleted);
    
    /**
     * 更新广告点击统计
     * 
     * @param materialId 素材ID
     * @return 更新结果
     */
    int updateClickStatistics(Long materialId);
}